package cmd

import (
	"fmt"
	"strconv"

	"git-todo/internal/git"
	"git-todo/internal/storage"
)

func Done(args []string) {
	if len(args) == 0 {
		fmt.Println("请提供任务 ID")
		return
	}

	branch, err := git.GetCurrentBranch()
	if err != nil {
		fmt.Println("不在 Git 仓库中")
		return
	}

	todos, err := storage.LoadTodos()
	if err != nil {
		fmt.Println("加载待办任务数据失败:", err)
		return
	}

	tasks := todos[branch]
	if len(tasks) == 0 {
		fmt.Println("当前分支没有待办任务")
		return
	}

	id, err := strconv.Atoi(args[0])
	if err != nil {
		fmt.Println("任务 ID 必须为数字")
		return
	}

	for i := range tasks {
		if tasks[i].ID == id {
			if tasks[i].Done {
				fmt.Println("该任务已标记完成")
				return
			}
			tasks[i].Done = true
			todos[branch] = tasks

			if err := storage.SaveTodos(todos); err != nil {
				fmt.Println("保存待办任务数据失败:", err)
				return
			}

			fmt.Printf("已完成任务：%s\n", tasks[i].Content)
			return
		}
	}

	fmt.Println("未找到匹配的任务 ID")
}
